package com.jumei.flume.parser;

import org.joda.time.DateTime;

import java.util.List;

/**
 * 对于一个日志文件包含多个不同类型的日志，需要用SubParser进一步解析
 */
public interface LogLineSubParser {

    public void register(LogLineParser parentParser);

    /**
     * 区分日志行类型的标识字符串
     *
     * @return
     */
    public String[] getCategoryFlag();

    /**
     * 返回日志分类的名称
     *
     * @return
     */
    public String getCategory();

    /**
     * 解析日志信息
     *
     * @param line          需要解析的日志行
     * @param splitedValues 日志行按分隔符拆分之后的List
     * @return
     */
    public List<ParsedLine> parse(String line, String[] splitedValues);

    /**
     * 获取日志的创建时间
     *
     * @param line
     * @param splitedValues
     * @return
     */
    public DateTime parseCreateTime(String line, String[] splitedValues);

}
